#ifndef _REQUEST_CORE_HPP
#define _REQUEST_CORE_HPP 1

#include <boost/shared_ptr.hpp>
#include "ClientMessage.hpp"
#include "Entry.hpp"

namespace BFT
{
	namespace messages
	{

		class RequestCore : public virtual ClientMessage
		{
			public:
			
			virtual boost::shared_ptr<char> getCommand() = 0;
			
			virtual uint32_t getCommandSize() = 0;
			
			virtual boost::shared_ptr<Entry> getEntry() = 0;
			
			virtual boost::shared_ptr<char> getBytes(int& _core_byes_size) = 0;
			
			virtual void printInfo() = 0;
			
			virtual bool equals(boost::shared_ptr<RequestCore> _other_rc) = 0;
			
			virtual ~RequestCore() {};

		};

	} //namespace messages
} // namespace BFT

#endif
